package com.dc.designPattern._3_prototype.improve;

import com.google.common.base.Throwables;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * Description: 原型模式，绵羊 需要Copy的类
 * @author: gdc
 * @date: 2021/3/8
 * @version 1.0
 */
@Slf4j
@Data
@AllArgsConstructor
public class Sheep implements Cloneable{
	/**
	 * 名字
	 */
	private String name;
	/**
	 * 年龄
	 */
	private int age;
	/**
	 * 颜色
	 */
	private String color;

	/**
	 * 对象引用，用于验证浅拷贝的问题
	 */
	private Sheep firend;

	public Sheep(String name, int age, String color) {
		this.name = name;
		this.age = age;
		this.color = color;
	}

	@Override
	protected Object clone() {
		try {
			return super.clone();
		} catch (CloneNotSupportedException e) {
			log.error("Copy对象信息时出现异常，异常的原因为：{}", Throwables.getStackTraceAsString(e));
			return null;
		}
	}
}
